1. Field of the Invention
The present invention generally relates to interrupt handlers, and more particularly to interrupt handlers that consistently handle interrupts regardless of whether the interrupts occur in a non-partitioned system or in a partitioned system.
2. Description of the Related Art
The combination of hardware and software on a particular computer system defines a computing environment. Different hardware platforms and different operating systems thus provide different computing environments. In recent years, engineers have recognized that it is possible to provide different computing environments on the same physical computer system by logically partitioning the computer system resources to different computing environments. The AS/400 computer system developed by IBM is an example of a computer system that supports logical partitioning. If logical partitioning on an AS/400 is desired, partition manager code referred to as a xe2x80x9chypervisorxe2x80x9d in AS/400 terminology is installed that allows defining different computing environments on the same platform. Once the partition manager is installed, logical partitions may be created that define different computing environments. The partition manager manages the logical partitions to assure that they can share needed resources in the computer system while maintaining the separate computing environments defined by the logical partitions.
In a computer system with no logical partitions, a partition manager is not needed, and the operating system controls access to the computer system resources. In a computer system that has one or more logical partitions, the partition manager controls access to the computer system resources and the operating system installed in each logical partition uses the partition manager to perform its functions. Because both the operating system and the partition manager must be able to manage the resources in a computer system, the low-level functions of an operating system are typically implemented in a partition manager as well. In known systems, the partition manager is separate from the operating system, and the partition manager is generally maintained separately from the operating system. Because they share similar functions, a change to a common function in one will typically require a corresponding change in the other.
In both partitioned and non-partitioned environments, a software-based reset mechanism is typically supported to permit one processor to initiate a reset of another processor. Typically, a software based reset mechanism relies on the use of interrupts, often referred to as interprocessor interrupts (IPI""s), to cause a hung processor to reset and restore itself to a known state. An IPI, like all interrupts, causes a processor to cease all current operations and immediately jump to a dedicated program code, referred to as an xe2x80x9cinterrupt handlerxe2x80x9d, to handle the interrupt.
One problem which arises in the context of partitioned and non-partitioned environments is that the interrupt handler must be coded differently for each environment. This is because the manner in which the interrupt handler is called is dependent upon the hardware state of the environment, which is different for partitioned and non-partitioned systems.
One attempt to solve this problem is to virtualize the hardware. By virtualizing the hardware, the interrupt handler does not see the different states depending on the mode, i.e., partitioned vs. non-partitioned. However, this approach requires hardware changes which are expensive and, therefore, undesirable.
Therefore, there is a need for a method and system of consistently handling interrupts regardless of whether the interrupts occur in a non-partitioned system or in a partitioned system.
In one embodiment, a method of handling an interrupt in a computer system is provided. The method comprises, if the computer system is in a first mode of operation, executing a first code portion and then executing a common, mode-independent interrupt handler; and if the computer system is in a second mode of operation, executing a second code portion and then executing the common, mode-independent interrupt handler. The first mode of operation may be a non-partitioned mode, while the second mode of operation may be a partitioned mode.
In another embodiment, a computer system is provided comprising a system bus, a processor coupled to the system bus and a memory coupled to the system bus, the memory containing a first code portion, a second code portion, and a common, mode-independent interrupt handler. If the computer system runs in a non-partitioned mode of operation and encounters an interrupt, the computer system is configured to execute the first code portion and then execute the common, mode-independent interrupt handler. If the computer system runs in a partitioned mode of operation and encounters an interrupt, the computer system is configured to execute the second code portion and then execute the common, mode-independent interrupt handler.
In still another embodiment, a computer readable medium storing a software program is provided. The program, when executed, causes a processor to perform operations comprising, (i) if the computer system is in a non-partitioned mode of operation, executing a first code portion and then executing a common, mode-independent interrupt handler; and (ii) if the computer system is in a partitioned mode of operation, executing a second code portion and then executing the common, mode independent interrupt handler.